/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#include "stdafx.h"
#include "引擎配置.h"
#include "系统/系统平台.h"



std::filesystem::path S_引擎配置::g_程序路径;
std::filesystem::path S_引擎配置::m_着色器编译器路径;
std::filesystem::path S_引擎配置::m_着色器头文件路径;
std::filesystem::path S_引擎配置::g_配置文件路径;

std::string S_引擎配置::m_UI着色器文件根路径;
std::string S_引擎配置::m_3D着色器文件根路径 = "奇怪的初始化";

std::u16string S_引擎配置::g_工程文件临时路径;
std::wstring S_引擎配置::g_系统目录;

std::u16string S_引擎配置::g_工程文件路径;
std::string S_引擎配置::g_工程文件名称;
std::u16string	S_引擎配置::g_资源文件夹;

bool S_引擎配置::G开启光追 = true;

uint64		S_引擎配置::g_当前加载文件版本号 = 0;



std::vector<std::string> S_引擎配置::g_支持的图像格式 = {
	".png",
	".jpg",
	".tga",
	".bmp",
	".hdr",
	".pic",
	".psd",
};



uint64 S_引擎配置::g_文件版本号 = 0 << 32 | 0;

uint64 S_引擎配置::g_低版本号_0 = 0 << 32 | 0;
uint64 S_引擎配置::g_低版本号_1 = 0 << 32 | 1;
uint64 S_引擎配置::g_低版本号_2 = 0 << 32 | 2;
uint64 S_引擎配置::g_低版本号_3 = 0 << 32 | 3;
uint64 S_引擎配置::g_低版本号_4 = 0 << 32 | 4;
uint64 S_引擎配置::g_低版本号_5 = 0 << 32 | 5;
uint64 S_引擎配置::g_低版本号_6 = 0 << 32 | 6;
uint64 S_引擎配置::g_低版本号_7 = 0 << 32 | 7;
uint64 S_引擎配置::g_低版本号_8 = 0 << 32 | 8;
uint64 S_引擎配置::g_低版本号_9 = 0 << 32 | 9;
uint64 S_引擎配置::g_低版本号_10 = 0 << 32 | 10;
uint64 S_引擎配置::g_低版本号_11 = 0 << 32 | 11;
uint64 S_引擎配置::g_低版本号_12 = 0 << 32 | 12;
uint64 S_引擎配置::g_低版本号_13 = 0 << 32 | 13;
uint64 S_引擎配置::g_低版本号_14 = 0 << 32 | 14;
uint64 S_引擎配置::g_低版本号_15 = 0 << 32 | 15;
uint64 S_引擎配置::g_低版本号_16 = 0 << 32 | 16;
uint64 S_引擎配置::g_低版本号_17 = 0 << 32 | 17;
uint64 S_引擎配置::g_低版本号_18 = 0 << 32 | 18;
uint64 S_引擎配置::g_低版本号_19 = 0 << 32 | 19;
uint64 S_引擎配置::g_低版本号_20 = 0 << 32 | 20;
uint64 S_引擎配置::g_低版本号_21 = 0 << 32 | 21;






S_引擎配置::S_引擎配置() {
	g_当前加载文件版本号 = 0;

	g_文件版本号 = 0 << 32 | 21;

	g_低版本号_0 = 0 << 32 | 0;
	g_低版本号_1 = 0 << 32 | 1;
	g_低版本号_2 = 0 << 32 | 2;
	g_低版本号_3 = 0 << 32 | 3;
	g_低版本号_4 = 0 << 32 | 4;
	g_低版本号_5 = 0 << 32 | 5;
	g_低版本号_6 = 0 << 32 | 6;
	g_低版本号_7 = 0 << 32 | 7;
	g_低版本号_8 = 0 << 32 | 8;
	g_低版本号_9 = 0 << 32 | 9;
	g_低版本号_10 = 0 << 32 | 10;
	g_低版本号_11 = 0 << 32 | 11;
	g_低版本号_12 = 0 << 32 | 12;
	g_低版本号_13 = 0 << 32 | 13;
	g_低版本号_14 = 0 << 32 | 14;
	g_低版本号_15 = 0 << 32 | 15;
	g_低版本号_16 = 0 << 32 | 16;
	g_低版本号_17 = 0 << 32 | 17;
	g_低版本号_18 = 0 << 32 | 18;
	g_低版本号_19 = 0 << 32 | 19;
	g_低版本号_20 = 0 << 32 | 20;
	g_低版本号_21 = 0 << 32 | 21;


	g_支持的图像格式 = {
		".png",
		".jpg",
		".tga",
		".bmp",
		".hdr",
		".pic",
		".psd",
	};

	f_初始化着色器文件路径();
}

void S_引擎配置::f_初始化着色器文件路径() {
	//S_引擎配置::g_程序路径 = std::filesystem::current_path();
	//S_引擎配置::g_程序路径 = std::filesystem::absolute(__FILE__);
	S_引擎配置::g_程序路径 = f_sys_get程序目录();
	
 
	S_引擎配置::g_工程文件临时路径 = std::filesystem::temp_directory_path().generic_u16string();

	S_引擎配置::m_UI着色器文件根路径 = (S_引擎配置::g_程序路径 / "shader_2d/").string();
	S_引擎配置::m_3D着色器文件根路径 = (S_引擎配置::g_程序路径 / "shader_3d/").string();
	S_引擎配置::m_着色器头文件路径 = (S_引擎配置::g_程序路径 / "include/");

	S_引擎配置::m_着色器编译器路径 = (S_引擎配置::g_程序路径 / "compiled/glslangValidator.exe");

	S_引擎配置::g_配置文件路径 = std::getenv("APPDATA");
	//S_引擎配置::g_配置文件路径 = std::getenv("HOME");
}


std::string S_引擎配置::f_get着色器加载路径(std::string fileName) {

#ifdef 预定义_最终输出
	S_引擎配置::g_程序路径 = (std::filesystem::current_path().string()) + "/";
#else
	S_引擎配置::g_程序路径 = (std::filesystem::current_path().string()) + "/";
#endif // 预定义_最终输出
	
	return std::string();
}


